home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / fb386 / tool / watanabe / medit / medit_a.bas < prev    next >
BASIC Source File  |  1995-01-22  |  4KB  |  84 lines

  1. 60000 '
  2. 60010 '『文字編集サブルーチン  TYPE A』使用例
  3. 60020   CLEAR ,,1024,100000,6,0:LOADM"keyclear.rex",0
  4. 60030   CONSOLE 0,24,2:COLOR 1,7:CLS
  5. 60040   LINE(0,463)-(639,479),PSET,0,BF,0
  6. 60050   E_文字$="文字列編集サブルーチン TYPE A  v1.02  (C)渡辺 良一"
  7. 60060   E_字数=51:E_X=15:E_Y=10
  8. 60070   E_CR0=15:E_CR1=10:E_CR2=0
  9. 60080   GOSUB *文字編集:END
  10. 60090 '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  11. 60100 '★              プログラム開発支援シリーズ第5弾        ★
  12. 60110 '★             文字列編集サブルーチン   TYPE A     v1.02          ★
  13. 60120 '★                              94年10月14日(金)  (C)渡辺 良一 ★
  14. 60130 '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  15. 60140 '
  16. 60150 '変数紹介(先頭の『E_』は省略)
  17. 60160 '  文字$ ……… 編集する文字列
  18. 60170 '  X,Y   ……… 文字を表示する文字座標
  19. 60180 '  字数  ……… 編集する文字の最大の長さ(半角計算)
  20. 60190 '  CR0   ……… 背景色
  21. 60200 '  CR1   ……… カーソルの色
  22. 60210 '  CR2   ……… 枠の表示色
  23. 60220 '  CR    ……… カーソル移動時に使用
  24. 60230 '  M     ……… 文字入力時に使用
  25. 60240 '  XX    ……… カーソルを表示するX文字座標
  26. 60250 '  C     ……… カーソルの文字列中の位置(文字数で)
  27. 60260 '  I,I2  ……… カーソルを移動させる文字座標
  28. 60270 '  K$,K  ……… 入力された文字とそのキャラクタコード
  29. 60280 '
  30. 60290 *文字編集
  31. 60300   CALLM 0
  32. 60310   GOSUB *E_文字表示
  33. 60320   E_XX=LEN(E_文字$):E_C=KLEN(E_文字$)
  34. 60330   E_CR=E_CR1:GOSUB *E_書く
  35. 60340  '枠を表示したくない場合は下の行と「E_CR2」と言う変数を削除してください
  36. 60350   LINE(E_X*8-1,E_Y*19-1)-STEP(E_字数*8+3,17),PSET,%E_CR2,B
  37. 60360 *E_INKEY
  38. 60370   E_K$=INKEY$
  39. 60380   IF E_K$="" THEN *E_INKEY
  40. 60390   E_K=ASC(E_K$)
  41. 60400   '  ↓実行キー
  42. 60410   IF E_K=13 THEN GOSUB *E_消す:RETURN
  43. 60420   IF E_K=24 THEN GOSUB *E_消す:RETURN' 復帰する場所を指定
  44. 60430   '  ↑取消キー
  45. 60440   IF E_K=5 AND E_XX<LEN(E_文字$) THEN *E_一括削除
  46. 60450   IF E_K=8 AND E_C >0            THEN *E_後退
  47. 60460   IF E_K=127 THEN IF E_XX<LEN(E_文字$) THEN *E_削除 ELSE *E_INKEY
  48. 60470   IF E_K=28 AND E_XX<LEN(E_文字$) THEN E_I= 1:GOTO *E_左右移動 '右
  49. 60480   IF E_K=29 AND E_C >0            THEN E_I=-1:GOTO *E_左右移動 '左
  50. 60490   IF E_K<32 THEN *E_INKEY    '↓日本語文字なら次も入力する
  51. 60500   IF (127<E_K AND E_K<160) OR 223<E_K THEN E_K$=E_K$+INKEY$
  52. 60510   '**** 文字入力 *********
  53. 60520   E_M=LEN(E_文字$+E_K$)
  54. 60530   IF E_M>E_字数 THEN BEEP:CALLM 0:GOTO *E_INKEY
  55. 60540   E_文字$=KLEFT$(E_文字$,E_C)+E_K$+KMID$(E_文字$,E_C+1)
  56. 60550   E_I=1:E_I2=LEN(E_K$):GOSUB *E_文字表示:GOTO *E_移動
  57. 60560 '
  58. 60570 *E_一括削除
  59. 60580   E_文字$=KLEFT$(E_文字$,E_C)+STRING$(LEN(E_文字$)-E_C,32)
  60. 60590   GOSUB *E_文字表示
  61. 60600   E_文字$=KLEFT$(E_文字$,E_C)
  62. 60610   GOTO *E_INKEY
  63. 60620 *E_後退
  64. 60630   IF KTYPE(E_文字$,E_C) THEN E_I2=-2 ELSE E_I2=-1
  65. 60640   E_文字$=KLEFT$(E_文字$,E_C-1)+KMID$(E_文字$,E_C+1)
  66. 60650   GOSUB *E_文字表示:E_I=-1:GOTO *E_移動
  67. 60660 *E_削除
  68. 60670   E_文字$=KLEFT$(E_文字$,E_C)+KMID$(E_文字$,E_C+2)
  69. 60680   GOSUB *E_文字表示
  70. 60690   GOTO *E_INKEY
  71. 60700 *E_左右移動       '↓右移動なら+1 ↓日本語文字ならば
  72. 60710   IF KTYPE(E_文字$,29-E_K +E_C) THEN E_I2=E_I*2 ELSE E_I2=E_I
  73. 60720 '************************
  74. 60730 *E_移動
  75. 60740   E_C=E_C+E_I
  76. 60750   GOSUB *E_消す
  77. 60760   E_CR=E_CR1:E_XX=E_XX+E_I2
  78. 60770   GOSUB *E_表示
  79. 60780   GOTO *E_INKEY
  80. 60790 *E_消す:E_CR=E_CR0:GOSUB *E_書く:RETURN 'カーソル消す
  81. 60800 *E_表示:E_CR=E_CR1:GOSUB *E_書く:RETURN 'カーソル表示
  82. 60810 *E_書く:LINE((E_X+E_XX)*8,E_Y*19)-STEP(1,15),PSET,%E_CR,B:RETURN
  83. 60820 *E_文字表示:LOCATE E_X,E_Y:PRINT E_文字$;"  ":RETURN
  84.